package com.ssaurel.mysleepquality.database

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase

/**
 * @ProjectName : MySleepQuality
 * @Author : 作者
 * @Time : 2021/10/11 10:15
 * @Description : 文件描述
 */
@Database(entities = [SleepNight::class],version = 1,exportSchema = false)
abstract class SleepDatabase : RoomDatabase() {
    abstract val sleepDatabaseDao : SleepDatabaseDao

    //在不实例化类的情况下访问用于创建或获取数据库的方法  这个类的唯一目的是提供一个数据库，没有理由实例化它
    companion object{
        @Volatile
        private var INSTANCE : SleepDatabase? = null

        fun getInstance(context: Context) : SleepDatabase{
            synchronized(this) {
                var instance = INSTANCE
                if (instance == null) {
                    instance = Room.databaseBuilder(
                        context.applicationContext,
                        SleepDatabase::class.java,
                        "sleep_history_database"
                    ).fallbackToDestructiveMigration().build()
                    INSTANCE = instance
                }
                return instance
            }
        }

    }

}